package com.ruoyi.flow.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.excel.annotation.ExcelDictFormat;
import com.ruoyi.common.excel.convert.ExcelDictConvert;
import lombok.Data;
import java.util.Date;
import java.io.Serializable;


/**
 * 工作流视图对象
 *
 * @author zzneko
 * @date 2025-07-14
 */
@Data
@ExcelIgnoreUnannotated
public class TWorkflowVo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ExcelProperty(value = "主键")
    private String id;

    /**
     * 流程类型
     */
    @ExcelProperty(value = "流程类型")
    private String type;

    /**
     * 请假原因
     */
    @ExcelProperty(value = "请假原因")
    private String reason;

    /**
     * 业务id
     */
    @ExcelProperty(value = "业务id")
    private String serviceId;

    /**
     * 流程实例id
     */
    @ExcelProperty(value = "流程实例id")
    private Long instanceId;

    /**
     * 节点编码
     */
    @ExcelProperty(value = "节点编码")
    private String nodeCode;

    /**
     * 节点名称
     */
    @ExcelProperty(value = "节点名称")
    private String nodeName;

    /**
     * 节点类型（0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关）
     */
    @ExcelProperty(value = "节点类型", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=开始节点,1=中间节点,2=结束节点,3=互斥网关,4=并行网关")
    private Integer nodeType;

    /**
     * 流程状态（0待提交 1审批中 2 审批通过 3自动通过 4终止 5作废 6撤销 7取回  8已完成 9已退回 10失效）
     */
    @ExcelProperty(value = "流程状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0=待提交,1=审批中,2=,审=批通过,3=自动通过,4=终止,5=作废,6=撤销,7=取回,8=已完成,9=已退回,1=0失效")
    private String flowStatus;

    /**
     * 创建者
     */
    @ExcelProperty(value = "创建者")
    private String createBy;

    /**
     * 创建时间
     */
    @ExcelProperty(value = "创建时间")
    private Date createTime;

    /**
     * 更新人
     */
    @ExcelProperty(value = "更新人")
    private String updateBy;

    /**
     * 更新时间
     */
    @ExcelProperty(value = "更新时间")
    private Date updateTime;


}
